//
//  MFAnalytics.h
//  NewMissFresh
//
//  Created by 董宝君 on 2019/6/10.
//  Copyright © 2019 com.missfresh. All rights reserved.
//

#import <Foundation/Foundation.h>
#import "MFAConfigOptions.h"
#import "MFAConstants.h"

NS_ASSUME_NONNULL_BEGIN

/**
 SDK版本
 */
#define MF_ANALYTICS_SDK_VERSION @"0.0.3"

/**
 埋点数据上报SDK入口类
 */
@interface MFAnalytics : NSObject

/**
 根据指定的初始化配置选项初始化MFAnalytics

 @param config 初始化配置
 @return MFAnalytics单例对象
 */
+ (MFAnalytics *)sharedAnalyticsWithConfig:(MFAConfigOptions *)config;

/**
 返回已经初始化好的单例对象
 调用当前方法之前，需要调用sharedAnalyticsWithConfig:方法
 @return 返回之前的单例 可能为空
 */
+ (MFAnalytics * _Nullable)sharedAnalytics;

/**
 当前的配置选项
 */
@property (nonatomic, readonly) MFAConfigOptions *config;

/**
 当前的触发上报的网络协议
 */
@property (nonatomic, readonly) MFAnalyticsNetworkType networkPolicy;

/**
 设置上报数据是网络发送策略
 默认 3G、4G、WIFI环境下都会进行发送
 
 @param networkPolicy 网络类型
 */
- (void)setFlushNetworkPolicy:(MFAnalyticsNetworkType)networkPolicy;

/**
 是否允许sdk 打印log 默认NO

 @param enabelLog 是否允许log
 */
- (void)enableLog:(BOOL)enabelLog;


/**
 是否允许加密数据，默认是不加密，可以打开进行数据加密

 @param encrypted 是否加密
 */
- (void)enableEncrypted:(BOOL)encrypted;

/**
 event 事件追踪，目前由于设计原因，内部数据组装的数据格式为数组内对象，而非字符串
  默认非实时追踪 会执行策略进行触发 realtime 为NO

 @param event 事件字符串
 */
- (void)track:(nonnull NSDictionary *)event;

/**
 事件追踪 可以选择实时触发发送还是选择按照策略进行发送

 @param event 事件字符串
 @param realtime 是否实时触发
 */
- (void)track:(nonnull NSDictionary *)event realtime:(BOOL)realtime;

/**
 删除全部缓存，谨慎使用，会删除本地缓存的全部事件
 */
- (void)deleteAll;

@end

NS_ASSUME_NONNULL_END
